

if(0 < f7 && f3 < 0){ f3 -= 2*f7*f3; }

f15 -= f6;
if(1 < f15){
	f15 -= 2;
}else if(f15 < -1){
	f15 += 2;
}




if(0 < f5){
	f2 *= 1 - f5;
	f2 += 0 < f1 ? f0 : f6;
}else{ 
	if(0 < f1){
		f0 *= 1 - (-f5);
		f0 += (-f5)*f2;
	}else{
		f6 *= 1 - (-f5);
		f6 += (-f5)*f2;
	}
}








{
	double radius = Math.sqrt(f3*f3 + f16*f16);
	double angle = Math.asin(f16/Math.max(.000000001,radius));
	if(f3 < 0){ angle += Math.PI; }
	double speed = 1 / Math.max(.000000001, Math.abs(f7));
	angle += f9*speed;
	f3 = Math.max( -1., Math.min(radius*Math.cos(angle), 1.) );
	f16 = Math.max( -1., Math.min(radius*Math.sin(angle), 1.) );
}

f16 = Math.max(f14,f11);

f0 -= f12;
if(1 < f0){
	f0 -= 2;
}else if(f0 < -1){
	f0 += 2;
}









{
	double radius = Math.sqrt(f3*f3 + f2*f2);
	double angle = Math.asin(f2/Math.max(.000000001,radius));
	if(f3 < 0){ angle += Math.PI; }
	double speed = 1 / Math.max(.000000001, Math.abs(f7));
	angle += f9*speed;
	f3 = Math.max( -1., Math.min(radius*Math.cos(angle), 1.) );
	f2 = Math.max( -1., Math.min(radius*Math.sin(angle), 1.) );
}


if(0 < f7 && f2 < 0){ f2 -= 2*f7*f2; }

f7 = Math.sin( f3 / Math.max(.000000001,Math.abs(f9)) );

f8 = Math.min(f4,f14);

f9 = Math.min(f11,f16);



if(0 < f5){
	f2 *= 1 - f5;
	f2 += 0 < f1 ? f0 : f11;
}else{ 
	if(0 < f1){
		f0 *= 1 - (-f5);
		f0 += (-f5)*f2;
	}else{
		f11 *= 1 - (-f5);
		f11 += (-f5)*f2;
	}
}








{
	double radius = Math.sqrt(f3*f3 + f4*f4);
	double angle = Math.asin(f4/Math.max(.000000001,radius));
	if(f3 < 0){ angle += Math.PI; }
	double speed = 1 / Math.max(.000000001, Math.abs(f7));
	angle += f10*speed;
	f3 = Math.max( -1., Math.min(radius*Math.cos(angle), 1.) );
	f4 = Math.max( -1., Math.min(radius*Math.sin(angle), 1.) );
}

f4 -= f6;
if(1 < f4){
	f4 -= 2;
}else if(f4 < -1){
	f4 += 2;
}





if(0 < f4){ 
	if(f5 < 0){ f5 -= 2*f4*f5; }
}else{ 
	if(0 < f5){ f5 -= 2*f4*f5; }
}

f14 = Math.sin( f5 / Math.max(.000000001,Math.abs(f15)) );

f16 = Math.sin( f6 / Math.max(.000000001,Math.abs(f9)) );

{
	double tempFollow3Var = f8;
	f8 = f7;
	f7 = f14;
	f14 = tempFollow3Var;
}








{
	double radius = Math.sqrt(f2*f2 + f10*f10);
	double angle = Math.asin(f10/Math.max(.000000001,radius));
	if(f2 < 0){ angle += Math.PI; }
	double speed = 1 / Math.max(.000000001, Math.abs(f12));
	angle += f6*speed;
	f2 = Math.max( -1., Math.min(radius*Math.cos(angle), 1.) );
	f10 = Math.max( -1., Math.min(radius*Math.sin(angle), 1.) );
}

f0 = Math.min(f11,f15);

f13 = Math.min(f11,f16);

f8 = Math.min(f13,f14);

f16 = Math.sin( f8 / Math.max(.000000001,Math.abs(f3)) );

f9 = Math.sin( f5 / Math.max(.000000001,Math.abs(f1)) );








{
	double radius = Math.sqrt(f3*f3 + f12*f12);
	double angle = Math.asin(f12/Math.max(.000000001,radius));
	if(f3 < 0){ angle += Math.PI; }
	double speed = 1 / Math.max(.000000001, Math.abs(f7));
	angle += f9*speed;
	f3 = Math.max( -1., Math.min(radius*Math.cos(angle), 1.) );
	f12 = Math.max( -1., Math.min(radius*Math.sin(angle), 1.) );
}

f1 -= f6;
if(1 < f1){
	f1 -= 2;
}else if(f1 < -1){
	f1 += 2;
}
